<?php

class Docente_Model extends CI_Model {


    function actualizarDocente($parameters, $ide_pers) {
        $update = array(
            "cat_escalofon_doc" => $parameters['cat_escalofon_doc'],
            "tipo_contrato_doc" => $parameters['tipo_contrato_doc'],
            "concurso_doc" => $parameters['concurso_doc'],
            "dedicacion_doc" => $parameters['dedicacion_doc'],
            "cursa_estudios_doc" => $parameters['cursa_estudios_doc'],
            "fecha_ingreso1_doc" => $parameters['fecha_ingreso1_doc'],
            "fecha_salida1_doc" => $parameters['fecha_salida1_doc'],
            "fechaingeso2_doc" => $parameters['fechaingeso2_doc'],
            "fecha_salida2_doc" => $parameters['fecha_salida2_doc'],
            "fecha_ingreso3_doc" => $parameters['fechaingreso3_doc'],
            "fecha_salida3_doc" => $parameters['fecha_salida3_doc'],
            "activo_doc" => $parameters['activo_doc']);
        $this->db->where("persona_ide_pers", $ide_pers);
        $this->db->update("docente", $update);
    }

    function getDatosDocente($ide_pers) {
        $this->db->from('persona');
        $this->db->join('docente', 'persona.ide_pers = docente.persona_ide_pers', 'inner');
        $this->db->where('persona_ide_pers', $ide_pers);
        $this->db->where('docente.eliminado_doc', 0);
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
        }
        $query->free_result();
        return $data;
    }

    function getListado() {
        $this->db->select('docente.persona_ide_pers,docente.ide_doc,persona.cedula_pers,persona.apellido_pers,
            persona.nombre_pers,docente.cat_escalofon_doc,activo_doc');
        $this->db->from('persona');
        $this->db->join('docente', 'persona.ide_pers = docente.persona_ide_pers', 'inner');
        $this->db->where('docente.eliminado_doc', 0);
        $this->db->order_by("persona.apellido_pers");
        $this->db->order_by("persona.nombre_pers");

        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
            $query->free_result();
            return $data;
        } else {
            return null;
        }
    }


    function getBusquedaDocente($valor, $tipo) {
        if ($tipo == 1)
            $criterio = "persona.cedula_pers LIKE '%$valor%'";
        elseif ($tipo == 2)
            $criterio = "persona.apellido_pers LIKE '%$valor%'";
        else
            $criterio = "persona.nombre_pers LIKE '%$valor%'";


        $this->db->select('docente.persona_ide_pers,docente.ide_doc,persona.cedula_pers,persona.apellido_pers,
            persona.nombre_pers,docente.cat_escalofon_doc,activo_doc');
        $this->db->from('persona');
        $this->db->join('docente', 'persona.ide_pers = docente.persona_ide_pers', 'inner');
        $this->db->where($criterio);
        $this->db->where('docente.eliminado_doc', 0);
        $this->db->order_by("persona.apellido_pers");
        $this->db->order_by("persona.nombre_pers");
        $query = $this->db->get();

        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
            $query->free_result();
            return $data;
        } else {
            return null;
        }
    }
    /**
     * De jose.
     * Cargar Usuarios docentes para crear las cuentas
     * @return type
     */
  public function cargarUsuarioDocente(){ 
          $query="select p.ide_pers, p.cedula_pers, p.apellido_pers, p.nombre_pers, p.email_inst_pers, p.username_pers,fono_pers from docente inner join persona as p on p.ide_pers = docente.persona_ide_pers inner join distributivo on distributivo.ide_doc= docente.ide_doc inner join materia on materia.ide_mat = distributivo.ide_mat inner join periodos_lectivos as pl on pl.ide_lec=distributivo.ide_lec"
                          ." WHERE (pl.estado_lec='ABIERTO' AND docente.eliminado_doc=0 AND p.username_pers NOT IN (SELECT users.`username` FROM  users)) GROUP BY  p.cedula_pers ORDER BY p.apellido_pers";
       $Q=$this->db->query($query);
      return $Q->result_array();         
     }
//    public function cargarUsuarioDocente(){
//        $query="select p.ide_pers, p.cedula_pers, p.apellido_pers, p.nombre_pers, p.email_inst_pers, p.username_pers,fono_pers from docente inner join persona as p on p.ide_pers = docente.persona_ide_pers inner join distributivo on distributivo.ide_doc= docente.ide_doc inner join materia on materia.ide_mat = distributivo.ide_mat inner join periodos_lectivos as pl on pl.ide_lec=distributivo.ide_lec where pl.estado_lec='ABIERTO' and docente.eliminado_doc=0  group by  p.cedula_pers order by p.apellido_pers";
//        $Q=$this->db->query($query);
//        return $Q->result_array();         
//    }
    /**
     * Carga las materias que le pertenecen a un docente
     * @param type $ide_pers el identificador del docente
     * @return type una lista de las materias con sus respectivo docente
     */
    public function cargarMaterias($ide_pers){
        $query="select p.cedula_pers, p.apellido_pers, p.nombre_pers, materia.nombre_mat, distributivo.seccion, 
            distributivo.paralelo, carrera.nombre_car, carrera.cod_car, ciclos.nombre_cic, pl.ide_lec, materia.ide_mat, 
            docente.ide_doc  from docente 
            inner join persona as p on p.ide_pers = docente.persona_ide_pers 
            inner join distributivo on distributivo.ide_doc= docente.ide_doc 
            inner join materia on materia.ide_mat = distributivo.ide_mat 
            inner join periodos_lectivos as pl on pl.ide_lec=distributivo.ide_lec 
            inner join ciclos on ciclos.ide_cic = materia.ciclos_ide_cic 
            inner join pensum on pensum.ide_pen = ciclos.ide_pen inner join carrera on carrera.ide_car = pensum.ide_car  
            where pl.estado_lec='ABIERTO' and p.ide_pers = ".$ide_pers." and distributivo.eliminado=false";
            $Q=$this->db->query($query);
            return $Q->result_array();    
    }
    /**
     * Carga los estudiantes que le pertenecen al docente poe calificaciones
     * @param type $periodo El periodo lectivo actual
     * @param type $materia La materia que dicta el docente
     * @param type $seccion La seccion de la materia
     * @param type $paralelo El paralelo que da
     * @return type La lista de estudiantes
     */
    public function cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo){
        $query = "select estudiante.ide_est, cursa.ide_cur, persona.apellido_pers, persona.nombre_pers, seccion, 
            paralelo, materia_ide_mat, estudiante.activo_est, calificaciones.*      
            from cursa 
            inner join estudiante on estudiante.ide_est = cursa.estudiante_ide_est 
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers  
            inner join calificaciones on calificaciones.cursa_ide_cur=cursa.ide_cur   
            where periodos_lectivos_ide_lec = ".$periodo." 
             and materia_ide_mat = ".$materia." 
             and seccion = ".$seccion." 
             and paralelo='".$paralelo."' and cursa.reasig_arrastre_cur = 0 order by apellido_pers";
        $Q=$this->db->query($query);
        //echo $query;
            return $Q->result_array(); 
    }
    function cargarEstudiantesCalificacionesArrastre($periodo, $materia, $seccion, $paralelo) {
        $query="select calificaciones.*, estudiante.ide_est, arrastre.ide_cur, persona.apellido_pers, "
                . "persona.nombre_pers, arrastre.seccion_arr as seccion "
                . "from calificaciones "
                . "inner join arrastre on  arrastre.ide_cur = calificaciones.cursa_ide_cur "
                . "inner join estudiante on estudiante.ide_est = arrastre.estudiante_ide_est "
                . "inner join persona on persona.ide_pers = estudiante.persona_ide_pers "
                . "inner join cursa on cursa.ide_cur = arrastre.ide_cur "
                . "where cursa.periodos_lectivos_ide_lec= ".$periodo." "
                . "and arrastre.materia_ide_mat_arr = ".$materia." "
                . "and arrastre.seccion_arr =  ".$seccion." "
                . "and arrastre.paralelo_arr = '".$paralelo."' "
                . "order by apellido_pers;";
        $Q=$this->db->query($query);
        //echo $query;
            return $Q->result_array();
    }
    /**
     * Carga los estudiantes que le pertenecen al docente
     * @param type $periodo El periodo lectivo actual
     * @param type $materia La materia que dicta el docente
     * @param type $seccion La seccion de la materia
     * @param type $paralelo El paralelo que da
     * @return type La lista de estudiantes
     */
    public function cargarEstudiantes($periodo, $materia, $seccion, $paralelo){
        $query = "select estudiante.ide_est, cursa.ide_cur, persona.apellido_pers, persona.nombre_pers, seccion, 
            paralelo, materia_ide_mat, estudiante.activo_est, matriculas.estado_matr   
            from cursa 
            inner join estudiante on estudiante.ide_est = cursa.estudiante_ide_est 
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers              
            inner join matriculas on matriculas.estudiante_ide_est= estudiante.ide_est 
            where periodos_lectivos_ide_lec = ".$periodo." 
             and materia_ide_mat = ".$materia." 
             and seccion = ".$seccion." 
             and paralelo='".$paralelo."' and (cursa.estado_cur = 0  and matriculas.nro_matr>0)  group by estudiante.ide_est order by apellido_pers";
             //cursa.estado_cur = 0  and 
        //and paralelo='".$paralelo."' and (cursa.estado_cur = 0 or cursa.estado_cur=4) and (cursa.reasig_arrastre_cur =0 or cursa.reasig_arrastre_cur !=0) order by apellido_pers";
                $Q=$this->db->query($query);
                //echo $query;
$data = $Q->result_array();     
        $Q->free_result();
        return $data; 
    }
    function cargarEstudianteArrastre($periodo, $materia, $seccion, $paralelo) {
        /*$query = "select estudiante.ide_est, cursa.ide_cur, persona.apellido_pers, persona.nombre_pers, seccion, 
            paralelo, materia_ide_mat, estudiante.activo_est  
            from cursa 
            inner join arrastre on arrastre.ide_cur = cursa.ide_cur 
            inner join estudiante on estudiante.ide_est = cursa.estudiante_ide_est 
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers              
            inner join matriculas on matriculas.estudiante_ide_est= estudiante.ide_est 
            where periodos_lectivos_ide_lec = ".$periodo." 
             and materia_ide_mat = ".$materia." 
             and seccion = ".$seccion." 
             and paralelo='".$paralelo."' and (cursa.estado_cur = 0 and matriculas.nro_matr>0)  group by estudiante.ide_est order by apellido_pers";
        */
        $query = " select estudiante.ide_est,  persona.apellido_pers, persona.nombre_pers, "
                . "estudiante.activo_est, arrastre.*, matriculas.estado_matr "
                . "from arrastre "
                . "inner join estudiante on estudiante.ide_est = arrastre.estudiante_ide_est "
                . "inner join persona on persona.ide_pers = estudiante.persona_ide_pers "
                . "inner join matriculas on matriculas.estudiante_ide_est= arrastre.estudiante_ide_est "
                . "inner join cursa on cursa.ide_cur = arrastre.ide_cur  "
                . "where periodos_lectivos_ide_lec = ".$periodo." "
                . "and materia_ide_mat_arr = ".$materia." "
                . "and seccion_arr= ".$seccion." "
                . "and paralelo_arr='".$paralelo."' "
                . "group by arrastre.ide_cur";
        //echo $query;
        $Q=$this->db->query($query);
            $data = $Q->result_array();     
        $Q->free_result();
        return $data; 
    }
    
    public function verificarNotasPrimeroSegundoArrastre($periodo, $materia, $seccion, $paralelo){
        $query="select calificaciones.*, SUM(calificaciones.total1) as primero, 
            SUM(calificaciones.total2) as segundo, cursa.matriculas_id_matr 
            from calificaciones  
            inner join arrastre on arrastre.ide_cur = calificaciones.cursa_ide_cur 
            inner join cursa on cursa.ide_cur = calificaciones.cursa_ide_cur   
            inner join estudiante on estudiante.ide_est = arrastre.estudiante_ide_est  
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers            
            where periodos_lectivos_ide_lec = ".$periodo."              
             and materia_ide_mat_arr = ".$materia." 
             and seccion_arr = ".$seccion."             
             and paralelo_arr='".$paralelo."'  group by estudiante.ide_est order by apellido_pers";
        
            $Q=$this->db->query($query);
           // echo $query;
            $data = $Q->result_array();     
        $Q->free_result();
        return $data;  
    }
    /**
     * Función que permite borrar una calificacion
     * @param type $id_calificacion
     * @return type
     */
    public function borrarEstudianteCalificacion($id_calificacion){
        $this->db->where('ide_cal',$id_calificacion);
        return $this->db->delete('calificaciones');
    }
    public function verificarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo){
        $query="select calificaciones.*, SUM(calificaciones.total1) as primero, 
            SUM(calificaciones.total2) as segundo, cursa.matriculas_id_matr 
            from calificaciones  
            inner join cursa on cursa.ide_cur=calificaciones.cursa_ide_cur   
            inner join estudiante on estudiante.ide_est = cursa.estudiante_ide_est 
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers            
            where periodos_lectivos_ide_lec = ".$periodo." 
                and (cursa.estado_cur = 0)  
             and materia_ide_mat = ".$materia." 
             and seccion = ".$seccion."             
             and paralelo='".$paralelo."'  group by estudiante.ide_est order by apellido_pers";
        
            $Q=$this->db->query($query);
            $data = $Q->result_array();     
        $Q->free_result();
        return $data;  
    }
    
    
    
    public function sumarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo){
      
        $query = "select estudiante.ide_est, cursa.ide_cur, persona.apellido_pers, persona.nombre_pers, seccion, 
            paralelo, materia_ide_mat, estudiante.activo_est, calificaciones.*, cursa.estado_cur, cursa.ide_cur,      
            (calificaciones.total1 + calificaciones.total2) as total, (calificaciones.asiste2_cal + calificaciones.asiste1_cal) as asiste   
            from calificaciones  
            inner join cursa on cursa.ide_cur=calificaciones.cursa_ide_cur    
            inner join estudiante on estudiante.ide_est = cursa.estudiante_ide_est 
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers
            where periodos_lectivos_ide_lec = ".$periodo." 
             and materia_ide_mat = ".$materia." 
             and seccion = ".$seccion." 
                 and (cursa.estado_cur = 0)  
             and paralelo='".$paralelo."'  group by estudiante.ide_est order by apellido_pers";
        $Q=$this->db->query($query);
       $data = $Q->result_array();     
        $Q->free_result();
        return $data; 
    }
    public function sumarNotasPrimeroSegundoArrastre($periodo, $materia, $seccion, $paralelo){
      
        $query = "select estudiante.ide_est, arrastre.ide_cur, persona.apellido_pers, 
            persona.nombre_pers, arrastre.seccion_arr as seccion, arrastre.paralelo_arr as paralelo, 
            arrastre.materia_ide_mat_arr as materia_ide_mat, estudiante.activo_est, calificaciones.*,  
            cursa.estado_cur, (calificaciones.total1 + calificaciones.total2) as total, 
            (calificaciones.asiste2_cal + calificaciones.asiste1_cal) as asiste 
            from arrastre 
            inner join calificaciones on calificaciones.cursa_ide_cur = arrastre.ide_cur 
            inner join cursa on cursa.ide_cur= arrastre.ide_cur 
            inner join estudiante on estudiante.ide_est = cursa.estudiante_ide_est inner 
            join persona on persona.ide_pers = estudiante.persona_ide_pers
            where cursa.periodos_lectivos_ide_lec = ".$periodo." 
             and materia_ide_mat_arr = ".$materia." 
             and seccion_arr = ".$seccion." 
                   
             and paralelo_arr='".$paralelo."'  group by estudiante.ide_est order by apellido_pers";
        //and (cursa.estado_cur = 0)
        $Q=$this->db->query($query);
        $data = $Q->result_array();     
        $Q->free_result();
        return $data; 
    }
    function obtenerArrastre($ide_cur) {
        $this->db->distinct();
        $this->db->from('arrastre');
        $this->db->where('ide_cur', $ide_cur);
        $query = $this->db->get();
        $data = $query->row_array();
        $query->free_result();
        return $data;
    }
    //solo para sandra
    function listadoDocentesPeriod($id_periodo = 10) {
        $query="select persona.apellido_pers, persona.nombre_pers, persona.ide_pers, docente.ide_doc  from cursa inner join docente on docente.ide_doc = cursa.docente_ide_doc inner join persona on persona.ide_pers = docente.persona_ide_pers  where cursa.periodos_lectivos_ide_lec = 10 group by cursa.docente_ide_doc order by persona.apellido_pers";
        $Q=$this->db->query($query);
        $data = $Q->result_array();     
        $Q->free_result();
        return $data; 
    }
}